/* include/sys/types.h 
 * 
 * Copyright (C) 2021, 2022 intirain. 
 *
 * This file is part of xnix. 
 * 
 * XNIX is free software: you can redistribute it and/or modify 
 * it under the terms of the GNU General Public License as published by 
 * the Free Software Foundation, either version 3 of the License, or 
 * (at your option) any later version. 
 * 
 * XNIX is distributed in the hope that it will be useful, 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
 * GNU General Public License for more details. 
 * 
 * You should have received a copy of the GNU General Public License 
 * along with XNIX. If not, see <https://www.gnu.org/licenses/>
 */ 




#ifndef __TYPES_H
#define __TYPES_H


/* 
 * this file defines all types of intergers (not include 128-bits), 
 * in kernel hacking you should use these types, not use raw C types */

/*  
 * and, you should not use those 64-bit intergers, because xnix will 
 * (okay, I mean, evx)
 * run on some 32-bit machines too. 
 * */


#ifndef __ASSEMBLER__

/* signed intergers */

typedef signed char 		__int8_t;
typedef signed char 		__sint8_t;
typedef signed char 		__schar_t;

typedef short signed int 	__int16_t;
typedef short signed int 	__sint16_t;

typedef signed int 		__int32_t;
typedef signed int 		__sint32_t;

typedef long signed int 	__int64_t;
typedef long signed int 	__sint64_t;


/* and, unsigneds */

typedef unsigned char 		__uint8_t;
typedef unsigned char 		__uchar_t;

typedef short unsigned int	__uint16_t;
typedef unsigned int 		__uint32_t;
typedef long unsigned int 	__uint64_t;


typedef __uint16_t 		__gid_t;
typedef __uint32_t 		__uid_t;

typedef __uint32_t 		__ref_t;
typedef __uint32_t 		__dev_t;

typedef __int8_t 		s8;
typedef __int16_t 		s16;
typedef __int32_t 		s32;
typedef __int64_t 		s64;

typedef __uint8_t 		u8;
typedef __uint16_t 		u16;
typedef __uint32_t 		u32;
typedef __uint64_t 		u64;


#endif

#endif

